import numpy as np
import pandas as pd

df = pd.read_excel('data/house_info.xls', usecols=[
                'floor','year','area','price'])
# 截取字符串转换成int类型
# 将 year 列改为整数年份存储。
df.year = pd.to_numeric(df.year.str[:-2]).astype('Int64')
# 将 floor 列替换为 Level, Highest 两列，其中的元素分别为 string 类型的层类别（高层、中层、低层）与整数类型的最高层数。
pat = '(\w层)（共(\d+)层）'
new_cols = df.floor.str.extract(pat).rename(
                    columns={0:'Level', 1:'Highest'})
# 替换并把之前的丢掉
df = pd.concat([df.drop(columns=['floor']), new_cols], 1)
'''
计算房屋每平米的均价 avg_price ，以 ***元/平米 的格式存储到表中，其中 *** 为整数
'''
s_area = pd.to_numeric(df.area.str[:-1])
s_price = pd.to_numeric(df.price.str[:-1])
df['avg_price'] = ((s_price/s_area)*10000).astype(
                    'int').astype('string') + '元/平米'

'''
计算每一个 Episode 的台词条数。
'''
df = pd.read_csv('data/script.csv')
df.columns = df.columns.str.strip()
# 分组统计
df.groupby(['Season', 'Episode'])['Sentence'].count().head()
'''
以空格为单词的分割符号，请求出单句台词平均单词量最多的前五个人。
分割然后分组求均值 然后排序
'''
df.set_index('Name').Sentence.str.split().str.len(
 ).groupby('Name').mean().sort_values(ascending=False).head()
'''
若某人的台词中含有问号，那么下一个说台词的人即为回答者。若上一人台词中含有  个问号，则认为回答者回答了 n个问题，请求出回答最多问题的前五个人。
'''
s = pd.Series(df.Sentence.values, index=df.Name.shift(-1))
s.str.count('\?').groupby('Name').sum().sort_values(ascending=False).head()